CSC180 Project 3¶

by Yahir Ocegueda¶

10/22/2024¶

Importing necessary tools and setting up functions:¶

In [193]:
from google.colab import drive
drive.mount('/content/drive')
Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount("/content/drive", force_remount=True).
In [194]:
import seaborn as sns
import os
import pandas as pd
import matplotlib.pyplot as plt
from sklearn import metrics
from sklearn.metrics import mean_squared_error

import csv
import numpy as np
%matplotlib inline

import cv2
import glob
from IPython.display import Image
In [195]:
# Encode text values to dummy variables(i.e. [1,0,0],[0,1,0],[0,0,1] for red,green,blue)
def encode_text_dummy(df, name):
    dummies = pd.get_dummies(df[name])
    for x in dummies.columns:
        dummy_name = "{}-{}".format(name, x)
        df[dummy_name] = dummies[x]
    df.drop(name, axis=1, inplace=True)


# Encode text values to indexes(i.e. [1],[2],[3] for red,green,blue).
def encode_text_index(df, name):
    le = preprocessing.LabelEncoder()
    df[name] = le.fit_transform(df[name])
    return le.classes_


# Encode a numeric column as zscores
def encode_numeric_zscore(df, name, mean=None, sd=None):
    if mean is None:
        mean = df[name].mean()

    if sd is None:
        sd = df[name].std()

    df[name] = (df[name] - mean) / sd


# Convert all missing values in the specified column to the median
def missing_median(df, name):
    med = df[name].median()
    df[name] = df[name].fillna(med)


# Convert all missing values in the specified column to the default
def missing_default(df, name, default_value):
    df[name] = df[name].fillna(default_value)


# Convert a Pandas dataframe to the x,y inputs that TensorFlow needs
def to_xy(df, target):
    result = []
    for x in df.columns:
        if x != target:
            result.append(x)
    # find out the type of the target column.
    target_type = df[target].dtypes
    target_type = target_type[0] if isinstance(target_type, Sequence) else target_type
    # Encode to int for classification, float otherwise. TensorFlow likes 32 bits.
    if target_type in (np.int64, np.int32):
        # Classification
        dummies = pd.get_dummies(df[target])
        return df[result].values.astype(np.float32), dummies.values.astype(np.float32)
    else:
        # Regression
        return df[result].values.astype(np.float32), df[target].values.astype(np.float32)

# Nicely formatted time string
def hms_string(sec_elapsed):
    h = int(sec_elapsed / (60 * 60))
    m = int((sec_elapsed % (60 * 60)) / 60)
    s = sec_elapsed % 60
    return "{}:{:>02}:{:>05.2f}".format(h, m, s)


# Regression chart.
def chart_regression(pred,y,sort=True):
    t = pd.DataFrame({'pred' : pred, 'y' : y.flatten()})
    if sort:
        t.sort_values(by=['y'],inplace=True)
    a = plt.plot(t['y'].tolist(),label='expected')
    b = plt.plot(t['pred'].tolist(),label='prediction')
    plt.ylabel('output')
    plt.legend()
    plt.show()

# Remove all rows where the specified column is +/- sd standard deviations
def remove_outliers(df, name, sd):
    drop_rows = df.index[(np.abs(df[name] - df[name].mean()) >= (sd * df[name].std()))]
    df.drop(drop_rows, axis=0, inplace=True)


# Encode a column to a range between normalized_low and normalized_high.
def encode_numeric_range(df, name, normalized_low=-1, normalized_high=1,
                         data_low=None, data_high=None):
    if data_low is None:
        data_low = min(df[name])
        data_high = max(df[name])

    df[name] = ((df[name] - data_low) / (data_high - data_low)) * (normalized_high - normalized_low) + normalized_low

Data Preprocessing¶

Loading dataset:¶

In [196]:
filename_read = os.path.join("/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/HousesInfo.txt")
In [197]:
cols=["Bedrooms","Bathrooms","area","zipcode","price"]
df = pd.read_csv(filename_read , sep=" ", header=None , names=cols)
df['id'] = range(len(df))
df.head()
Out[197]:
Bedrooms Bathrooms area zipcode price id
0 4 4.0 4053 85255 869500 0
1 4 3.0 3343 36372 865200 1
2 3 4.0 3923 85266 889000 2
3 5 5.0 4022 85262 910000 3
4 3 4.0 4116 85266 971226 4
In [198]:
df.shape
Out[198]:
(535, 6)

Removing outliers:¶

In [199]:
# Remove houses that are outliers, keep only houses that are between 100k and 900k in price
outlier_start = df.index[df['price'] <= 100000].tolist()
outlier_end = df.index[df['price'] >= 900000].tolist()

outlier_total = outlier_start + outlier_end

len(outlier_total)
Out[199]:
130
In [200]:
range_outlier = (df['price'] > 100000) & (df['price'] < 900000)
df = df[range_outlier]
df
Out[200]:
Bedrooms Bathrooms area zipcode price id
0 4 4.0 4053 85255 869500 0
1 4 3.0 3343 36372 865200 1
2 3 4.0 3923 85266 889000 2
6 3 4.0 2544 85262 799000 6
10 5 5.0 4829 85266 519200 10
... ... ... ... ... ... ...
530 5 2.0 2066 94531 399900 530
531 4 3.5 9536 94531 460000 531
532 3 2.0 2014 94531 407000 532
533 4 3.0 2312 94531 419000 533
534 5 3.0 3796 94531 615000 534

405 rows × 6 columns

Check for missing values:¶

In [201]:
# Check missing values in specific columns
missing_values = df[['Bedrooms', 'Bathrooms', 'area', 'price', 'zipcode']].isnull().sum()
print(missing_values)
Bedrooms     0
Bathrooms    0
area         0
price        0
zipcode      0
dtype: int64

Normalize numeric features, encode categorical ones:¶

In [202]:
numeric_types = ['Bedrooms', 'Bathrooms', 'area']
# Encoding categorical features
encode_text_dummy(df, 'zipcode')
# Normalizing numeric features
for numCat in numeric_types:
    encode_numeric_zscore(df, numCat)
In [203]:
df
Out[203]:
Bedrooms Bathrooms area price id zipcode-36372 zipcode-60002 zipcode-60016 zipcode-60046 zipcode-62025 ... zipcode-93314 zipcode-93446 zipcode-93510 zipcode-94501 zipcode-94531 zipcode-94565 zipcode-94568 zipcode-95220 zipcode-96019 zipcode-98021
0 0.520436 1.635628 1.539241 869500 0 False False False False False ... False False False False False False False False False False
1 0.520436 0.494001 0.916083 865200 1 True False False False False ... False False False False False False False False False False
2 -0.372685 1.635628 1.425142 889000 2 False False False False False ... False False False False False False False False False False
6 -0.372685 1.635628 0.214810 799000 6 False False False False False ... False False False False False False False False False False
10 1.413556 2.777256 2.220327 519200 10 False False False False False ... False False False False False False False False False False
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
530 1.413556 -0.647627 -0.204724 399900 530 False False False False False ... False False False False True False False False False False
531 0.520436 1.064815 6.351603 460000 531 False False False False False ... False False False False True False False False False False
532 -0.372685 -0.647627 -0.250364 407000 532 False False False False False ... False False False False True False False False False False
533 0.520436 0.494001 0.011187 419000 533 False False False False False ... False False False False True False False False False False
534 1.413556 0.494001 1.313675 615000 534 False False False False False ... False False False False True False False False False False

405 rows × 45 columns

In [204]:
print(df.shape)
(405, 45)

Handling Images dataset¶

In [205]:
## Bathroom.jpg
new_images=[]
for number in range(1, 536):
    for path in glob.glob("/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/" + str(number) + "_bathroom.jpg"):
        if os.path.isfile(path):
            new_images.append(path)
In [206]:
new_images
Out[206]:
['/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/1_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/2_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/3_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/4_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/5_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/6_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/7_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/8_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/9_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/10_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/11_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/12_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/13_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/14_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/15_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/16_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/17_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/18_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/19_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/20_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/21_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/22_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/23_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/24_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/25_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/26_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/27_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/28_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/29_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/30_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/31_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/32_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/33_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/34_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/35_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/36_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/37_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/38_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/39_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/40_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/41_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/42_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/43_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/44_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/45_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/46_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/47_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/48_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/49_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/50_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/51_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/52_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/53_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/54_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/55_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/56_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/57_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/58_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/59_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/60_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/61_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/62_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/63_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/64_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/65_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/66_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/67_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/68_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/69_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/70_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/71_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/72_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/73_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/74_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/75_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/76_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/77_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/78_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/79_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/80_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/81_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/82_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/83_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/84_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/85_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/86_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/87_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/88_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/89_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/90_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/91_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/92_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/93_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/94_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/95_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/96_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/97_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/98_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/99_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/100_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/101_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/102_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/103_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/104_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/105_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/106_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/107_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/108_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/109_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/110_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/111_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/112_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/113_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/114_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/115_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/116_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/117_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/118_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/119_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/120_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/121_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/122_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/123_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/124_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/125_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/126_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/127_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/128_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/129_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/130_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/131_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/132_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/133_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/134_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/135_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/136_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/137_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/138_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/139_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/140_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/141_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/142_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/143_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/144_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/145_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/146_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/147_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/148_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/149_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/150_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/151_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/152_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/153_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/154_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/155_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/156_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/157_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/158_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/159_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/160_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/161_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/162_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/163_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/164_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/165_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/166_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/167_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/168_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/169_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/170_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/171_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/172_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/173_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/174_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/175_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/176_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/177_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/178_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/179_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/180_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/181_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/182_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/183_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/184_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/185_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/186_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/187_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/188_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/189_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/190_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/191_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/192_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/193_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/194_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/195_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/196_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/197_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/198_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/199_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/200_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/201_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/202_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/203_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/204_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/205_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/206_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/207_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/208_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/209_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/210_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/211_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/212_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/213_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/214_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/215_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/216_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/217_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/218_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/219_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/220_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/221_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/222_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/223_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/224_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/225_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/226_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/227_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/228_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/229_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/230_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/231_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/232_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/233_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/234_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/235_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/236_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/237_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/238_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/239_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/240_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/241_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/242_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/243_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/244_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/245_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/246_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/247_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/248_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/249_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/250_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/251_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/252_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/253_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/254_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/255_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/256_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/257_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/258_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/259_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/260_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/261_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/262_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/263_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/264_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/265_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/266_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/267_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/268_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/269_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/270_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/271_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/272_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/273_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/274_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/275_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/276_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/277_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/278_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/279_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/280_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/281_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/282_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/283_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/284_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/285_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/286_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/287_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/288_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/289_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/290_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/291_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/292_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/293_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/294_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/295_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/296_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/297_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/298_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/299_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/300_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/301_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/302_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/303_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/304_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/305_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/306_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/307_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/308_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/309_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/310_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/311_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/312_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/313_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/314_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/315_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/316_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/317_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/318_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/319_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/320_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/321_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/322_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/323_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/324_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/325_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/326_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/327_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/328_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/329_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/330_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/331_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/332_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/333_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/334_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/335_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/336_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/337_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/338_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/339_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/340_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/341_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/342_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/343_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/344_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/345_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/346_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/347_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/348_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/349_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/350_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/351_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/352_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/353_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/354_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/355_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/356_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/357_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/358_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/359_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/360_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/361_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/362_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/363_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/364_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/365_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/366_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/367_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/368_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/369_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/370_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/371_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/372_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/373_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/374_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/375_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/376_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/377_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/378_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/379_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/380_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/381_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/382_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/383_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/384_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/385_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/386_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/387_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/388_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/389_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/390_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/391_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/392_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/393_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/394_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/395_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/396_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/397_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/398_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/399_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/400_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/401_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/402_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/403_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/404_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/405_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/406_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/407_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/408_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/409_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/410_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/411_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/412_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/413_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/414_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/415_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/416_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/417_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/418_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/419_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/420_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/421_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/422_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/423_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/424_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/425_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/426_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/427_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/428_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/429_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/430_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/431_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/432_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/433_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/434_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/435_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/436_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/437_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/438_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/439_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/440_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/441_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/442_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/443_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/444_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/445_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/446_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/447_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/448_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/449_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/450_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/451_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/452_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/453_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/454_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/455_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/456_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/457_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/458_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/459_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/460_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/461_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/462_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/463_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/464_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/465_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/466_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/467_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/468_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/469_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/470_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/471_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/472_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/473_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/474_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/475_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/476_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/477_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/478_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/479_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/480_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/481_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/482_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/483_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/484_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/485_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/486_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/487_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/488_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/489_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/490_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/491_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/492_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/493_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/494_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/495_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/496_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/497_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/498_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/499_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/500_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/501_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/502_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/503_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/504_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/505_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/506_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/507_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/508_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/509_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/510_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/511_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/512_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/513_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/514_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/515_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/516_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/517_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/518_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/519_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/520_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/521_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/522_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/523_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/524_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/525_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/526_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/527_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/528_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/529_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/530_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/531_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/532_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/533_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/534_bathroom.jpg',
 '/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/535_bathroom.jpg']
In [207]:
img= pd.DataFrame(new_images,columns = ['bathroom_img'])
In [208]:
## bedroom images
bedroom_images = []
for number in range(1, 536):
    for path in glob.glob("/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/" + str(number) + "_bedroom.jpg"):
        if os.path.isfile(path):
            bedroom_images.append(path)
In [209]:
img['bedroom_img']=bedroom_images
In [210]:
frontal_images = []
for number in range(1, 536):
    for path in glob.glob("/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/" + str(number) + "_frontal.jpg"):
        if os.path.isfile(path):
            frontal_images.append(path)
In [211]:
img['frontal_img']=frontal_images
In [212]:
kitchen_images = []
for number in range(1, 536):
    for path in glob.glob("/content/drive/MyDrive/dataset/CSC180_Project3/Houses Dataset/" + str(number) + "_kitchen.jpg"):
        if os.path.isfile(path):
            kitchen_images.append(path)
In [213]:
img['kitchen_img']=kitchen_images
In [214]:
img['id'] = range(len(img))
In [215]:
img.head()
Out[215]:
bathroom_img bedroom_img frontal_img kitchen_img id
0 /content/drive/MyDrive/dataset/CSC180_Project3... /content/drive/MyDrive/dataset/CSC180_Project3... /content/drive/MyDrive/dataset/CSC180_Project3... /content/drive/MyDrive/dataset/CSC180_Project3... 0
1 /content/drive/MyDrive/dataset/CSC180_Project3... /content/drive/MyDrive/dataset/CSC180_Project3... /content/drive/MyDrive/dataset/CSC180_Project3... /content/drive/MyDrive/dataset/CSC180_Project3... 1
2 /content/drive/MyDrive/dataset/CSC180_Project3... /content/drive/MyDrive/dataset/CSC180_Project3... /content/drive/MyDrive/dataset/CSC180_Project3... /content/drive/MyDrive/dataset/CSC180_Project3... 2
3 /content/drive/MyDrive/dataset/CSC180_Project3... /content/drive/MyDrive/dataset/CSC180_Project3... /content/drive/MyDrive/dataset/CSC180_Project3... /content/drive/MyDrive/dataset/CSC180_Project3... 3
4 /content/drive/MyDrive/dataset/CSC180_Project3... /content/drive/MyDrive/dataset/CSC180_Project3... /content/drive/MyDrive/dataset/CSC180_Project3... /content/drive/MyDrive/dataset/CSC180_Project3... 4
In [216]:
print(img.shape)
print(df.shape)
(535, 5)
(405, 45)
In [217]:
img = img[img['id'].isin(df['id'])]
df = df.drop('id', axis=1)
img = img.drop('id', axis=1)
In [218]:
print(img.shape)
print(df.shape)
(405, 4)
(405, 44)

Concatenate houses images into one image for each house¶

In [219]:
images_output=[]
for row_index,row in img.iterrows():
            inputImages=[]
            outputImage = np.zeros((128, 128, 3), dtype="uint8")
            image_temp1 = cv2.imread(row.bathroom_img)
            image1 = cv2.resize(image_temp1, (64 , 64))

            image_temp2 = cv2.imread(row.bedroom_img)
            image2 = cv2.resize(image_temp2, (64 , 64))

            image_temp3 = cv2.imread(row.frontal_img)
            image3 = cv2.resize(image_temp3, (64 , 64))

            image_temp4 = cv2.imread(row.kitchen_img)
            image4 = cv2.resize(image_temp4, (64 , 64))

            inputImages.append(image1)
            inputImages.append(image2)
            inputImages.append(image3)
            inputImages.append(image4)

            outputImage[0:64, 0:64] = inputImages[0]
            outputImage[0:64, 64:128] = inputImages[1]
            outputImage[64:128, 64:128] = inputImages[2]
            outputImage[64:128, 0:64] = inputImages[3]


            images_output.append(outputImage)
In [220]:
from matplotlib import pyplot as plt

for i in images_output:
     plt.figure(figsize=(8,8))
     plt.imshow(i, interpolation='nearest')
     plt.show()

Create numpy arrays of images:¶

In [221]:
img_arr=np.asarray(images_output)
img_arr.shape
Out[221]:
(405, 128, 128, 3)
In [222]:
df.shape
Out[222]:
(405, 44)
In [223]:
import tensorflow as tf
from tensorflow.keras.layers import Dense, Activation
from tensorflow.keras.callbacks import EarlyStopping
from tensorflow.keras.callbacks import ModelCheckpoint
from tensorflow.keras.layers import Input
from tensorflow.keras.utils import plot_model
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Flatten
from tensorflow.keras.layers import Conv2D
from tensorflow.keras.layers import MaxPooling2D
from tensorflow.keras.layers import concatenate
In [224]:
from sklearn.model_selection import train_test_split

Splitting into training and testing dataset¶

In [225]:
# Turn into numpy array and drop price column
x = np.asarray(df.drop('price', axis=1), dtype='float32')
y = np.asarray(df['price'], dtype='float32')
In [226]:
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.20, random_state=777)
x_train_image, x_test_image = train_test_split(img_arr, test_size=0.20, random_state=777)
In [227]:
print(x_train.shape, x_test.shape, y_train.shape, y_test.shape)
print(x_train_image.shape, x_test_image.shape)
(324, 43) (81, 43) (324,) (81,)
(324, 128, 128, 3) (81, 128, 128, 3)

Training Model¶

In [228]:
import os
saved_path = './Prj3Models/'
if not os.path.exists(saved_path):
    os.makedirs(saved_path)
In [229]:
# saved_path = './Prj3Models/'
# Save best model
checkpointer = ModelCheckpoint(filepath=os.path.join(saved_path, "relu_model.keras"), verbose=0, save_best_only=True)

# Loop model training 5 times
for i in range(5):
    print('\nRun', i + 1)

    # Input layer for text data
    input1 = Input(shape=(43,))
    flat = Flatten()(input1) # Flatten input data
    # Dense layers with ReLU activation
    dense1 = Dense(256, activation='relu')(flat)
    dense2 = Dense(128, activation='relu')(dense1)
    dense3 = Dense(64, activation='relu')(dense2)
    # Final layer to output 25 units
    text_model = Dense(25, activation='relu')(dense3)



    # Input layer for image data
    input2 = Input(shape=(128,128,3))
    # Convolution and MaxPooling layers for image processing
    conv1 = Conv2D(64, kernel_size=4, activation='relu')(input2)
    pool1 = MaxPooling2D(pool_size=(2, 2))(conv1)
    conv2 = Conv2D(32, kernel_size=4, activation='relu')(pool1)
    pool2 = MaxPooling2D(pool_size=(2, 2))(conv2)
    conv3 = Conv2D(16, kernel_size=4, activation='relu')(pool2)
    pool3 = MaxPooling2D(pool_size=(2, 2))(conv3)
    # Flatten the processed image data
    image_model = Flatten()(pool3)

    # Merge the two input models
    merge = concatenate([text_model, image_model]) # Concatenate the outputs from the text and image models


    # Additional Dense layers for interpretation
    hidden1 = Dense(50, activation='relu')(merge)
    hidden2 = Dense(30, activation='relu')(hidden1)
    hidden3 = Dense(15, activation='relu')(hidden2)
    output = Dense(1, activation='linear')(hidden3)


    relu_model = Model(inputs=[input1, input2], outputs=output)
    relu_model.compile( optimizer='adam', loss='mean_squared_error')

    monitor = EarlyStopping(monitor='val_loss', min_delta=1e-3, patience=12, verbose=1, mode='auto')

    relu_model.fit([x_train, x_train_image], y_train, validation_data=([x_test, x_test_image], y_test), callbacks=[monitor, checkpointer], verbose=2, epochs=1000)

print('Runs complete, saving model')
print()
relu_model.load_weights(os.path.join(saved_path, "relu_model.keras"))
Run 1
Epoch 1/1000
11/11 - 9s - 861ms/step - loss: 272922771456.0000 - val_loss: 312374362112.0000
Epoch 2/1000
11/11 - 5s - 431ms/step - loss: 227715547136.0000 - val_loss: 94205190144.0000
Epoch 3/1000
11/11 - 0s - 32ms/step - loss: 67499188224.0000 - val_loss: 66069225472.0000
Epoch 4/1000
11/11 - 1s - 52ms/step - loss: 58600828928.0000 - val_loss: 45193867264.0000
Epoch 5/1000
11/11 - 0s - 20ms/step - loss: 56408850432.0000 - val_loss: 62535770112.0000
Epoch 6/1000
11/11 - 0s - 34ms/step - loss: 51465555968.0000 - val_loss: 43443556352.0000
Epoch 7/1000
11/11 - 0s - 21ms/step - loss: 47671902208.0000 - val_loss: 47841042432.0000
Epoch 8/1000
11/11 - 0s - 28ms/step - loss: 46791421952.0000 - val_loss: 43506098176.0000
Epoch 9/1000
11/11 - 0s - 20ms/step - loss: 47209844736.0000 - val_loss: 50657443840.0000
Epoch 10/1000
11/11 - 0s - 28ms/step - loss: 49507241984.0000 - val_loss: 43109527552.0000
Epoch 11/1000
11/11 - 0s - 21ms/step - loss: 48454041600.0000 - val_loss: 43264446464.0000
Epoch 12/1000
11/11 - 0s - 21ms/step - loss: 46383747072.0000 - val_loss: 47561515008.0000
Epoch 13/1000
11/11 - 0s - 33ms/step - loss: 47793516544.0000 - val_loss: 40913518592.0000
Epoch 14/1000
11/11 - 0s - 22ms/step - loss: 44700921856.0000 - val_loss: 41977098240.0000
Epoch 15/1000
11/11 - 0s - 27ms/step - loss: 42357927936.0000 - val_loss: 38638297088.0000
Epoch 16/1000
11/11 - 0s - 27ms/step - loss: 40870637568.0000 - val_loss: 37878153216.0000
Epoch 17/1000
11/11 - 0s - 20ms/step - loss: 38464593920.0000 - val_loss: 38045913088.0000
Epoch 18/1000
11/11 - 0s - 33ms/step - loss: 36282863616.0000 - val_loss: 34722934784.0000
Epoch 19/1000
11/11 - 0s - 26ms/step - loss: 35638902784.0000 - val_loss: 33550471168.0000
Epoch 20/1000
11/11 - 0s - 21ms/step - loss: 34160752640.0000 - val_loss: 37621956608.0000
Epoch 21/1000
11/11 - 0s - 27ms/step - loss: 33692377088.0000 - val_loss: 32251754496.0000
Epoch 22/1000
11/11 - 0s - 20ms/step - loss: 31190611968.0000 - val_loss: 33285238784.0000
Epoch 23/1000
11/11 - 0s - 26ms/step - loss: 30081363968.0000 - val_loss: 29966483456.0000
Epoch 24/1000
11/11 - 0s - 27ms/step - loss: 28590931968.0000 - val_loss: 28532477952.0000
Epoch 25/1000
11/11 - 0s - 27ms/step - loss: 27120068608.0000 - val_loss: 27495303168.0000
Epoch 26/1000
11/11 - 0s - 26ms/step - loss: 26251427840.0000 - val_loss: 25973571584.0000
Epoch 27/1000
11/11 - 0s - 22ms/step - loss: 23982901248.0000 - val_loss: 26389432320.0000
Epoch 28/1000
11/11 - 0s - 26ms/step - loss: 23164993536.0000 - val_loss: 22558248960.0000
Epoch 29/1000
11/11 - 0s - 21ms/step - loss: 20169193472.0000 - val_loss: 23336159232.0000
Epoch 30/1000
11/11 - 0s - 33ms/step - loss: 19088652288.0000 - val_loss: 17907929088.0000
Epoch 31/1000
11/11 - 0s - 26ms/step - loss: 17829492736.0000 - val_loss: 16359235584.0000
Epoch 32/1000
11/11 - 0s - 20ms/step - loss: 15602465792.0000 - val_loss: 16535483392.0000
Epoch 33/1000
11/11 - 0s - 33ms/step - loss: 15133208576.0000 - val_loss: 14929583104.0000
Epoch 34/1000
11/11 - 0s - 27ms/step - loss: 14705600512.0000 - val_loss: 14389203968.0000
Epoch 35/1000
11/11 - 0s - 27ms/step - loss: 13614531584.0000 - val_loss: 12875829248.0000
Epoch 36/1000
11/11 - 0s - 22ms/step - loss: 13435763712.0000 - val_loss: 13123358720.0000
Epoch 37/1000
11/11 - 0s - 20ms/step - loss: 13054435328.0000 - val_loss: 13125324800.0000
Epoch 38/1000
11/11 - 0s - 37ms/step - loss: 12524156928.0000 - val_loss: 12853517312.0000
Epoch 39/1000
11/11 - 0s - 31ms/step - loss: 13384571904.0000 - val_loss: 12214128640.0000
Epoch 40/1000
11/11 - 0s - 23ms/step - loss: 12462684160.0000 - val_loss: 12244405248.0000
Epoch 41/1000
11/11 - 0s - 31ms/step - loss: 12562432000.0000 - val_loss: 12102523904.0000
Epoch 42/1000
11/11 - 0s - 32ms/step - loss: 11608871936.0000 - val_loss: 11523859456.0000
Epoch 43/1000
11/11 - 1s - 56ms/step - loss: 11111185408.0000 - val_loss: 11177761792.0000
Epoch 44/1000
11/11 - 1s - 59ms/step - loss: 10781454336.0000 - val_loss: 11119971328.0000
Epoch 45/1000
11/11 - 0s - 22ms/step - loss: 10871714816.0000 - val_loss: 11620882432.0000
Epoch 46/1000
11/11 - 0s - 20ms/step - loss: 11530723328.0000 - val_loss: 11866948608.0000
Epoch 47/1000
11/11 - 0s - 28ms/step - loss: 10657134592.0000 - val_loss: 11935369216.0000
Epoch 48/1000
11/11 - 0s - 26ms/step - loss: 10792824832.0000 - val_loss: 11012178944.0000
Epoch 49/1000
11/11 - 0s - 20ms/step - loss: 10049150976.0000 - val_loss: 11859600384.0000
Epoch 50/1000
11/11 - 0s - 28ms/step - loss: 10603464704.0000 - val_loss: 12385221632.0000
Epoch 51/1000
11/11 - 0s - 33ms/step - loss: 10430884864.0000 - val_loss: 10651220992.0000
Epoch 52/1000
11/11 - 0s - 27ms/step - loss: 9564369920.0000 - val_loss: 10457781248.0000
Epoch 53/1000
11/11 - 0s - 21ms/step - loss: 9698971648.0000 - val_loss: 11102528512.0000
Epoch 54/1000
11/11 - 0s - 26ms/step - loss: 9185722368.0000 - val_loss: 10641251328.0000
Epoch 55/1000
11/11 - 0s - 20ms/step - loss: 9985287168.0000 - val_loss: 10603106304.0000
Epoch 56/1000
11/11 - 0s - 27ms/step - loss: 9115320320.0000 - val_loss: 10709874688.0000
Epoch 57/1000
11/11 - 0s - 20ms/step - loss: 9232033792.0000 - val_loss: 10869742592.0000
Epoch 58/1000
11/11 - 0s - 20ms/step - loss: 9495972864.0000 - val_loss: 11989398528.0000
Epoch 59/1000
11/11 - 0s - 33ms/step - loss: 9487364096.0000 - val_loss: 10449198080.0000
Epoch 60/1000
11/11 - 0s - 20ms/step - loss: 9223617536.0000 - val_loss: 10463561728.0000
Epoch 61/1000
11/11 - 0s - 26ms/step - loss: 9033085952.0000 - val_loss: 10272291840.0000
Epoch 62/1000
11/11 - 0s - 22ms/step - loss: 8730437632.0000 - val_loss: 10377329664.0000
Epoch 63/1000
11/11 - 0s - 27ms/step - loss: 8531833344.0000 - val_loss: 10342001664.0000
Epoch 64/1000
11/11 - 0s - 27ms/step - loss: 8576715776.0000 - val_loss: 10451055616.0000
Epoch 65/1000
11/11 - 0s - 20ms/step - loss: 8336347648.0000 - val_loss: 10321449984.0000
Epoch 66/1000
11/11 - 0s - 27ms/step - loss: 8375233024.0000 - val_loss: 10446371840.0000
Epoch 67/1000
11/11 - 0s - 20ms/step - loss: 8354375680.0000 - val_loss: 10529594368.0000
Epoch 68/1000
11/11 - 0s - 27ms/step - loss: 8131072000.0000 - val_loss: 12241502208.0000
Epoch 69/1000
11/11 - 0s - 20ms/step - loss: 8511993856.0000 - val_loss: 10359767040.0000
Epoch 70/1000
11/11 - 0s - 28ms/step - loss: 8060099584.0000 - val_loss: 10978538496.0000
Epoch 71/1000
11/11 - 0s - 21ms/step - loss: 8062827520.0000 - val_loss: 10423523328.0000
Epoch 72/1000
11/11 - 0s - 20ms/step - loss: 8322983936.0000 - val_loss: 11337521152.0000
Epoch 73/1000
11/11 - 0s - 20ms/step - loss: 7840099840.0000 - val_loss: 10463460352.0000
Epoch 73: early stopping

Run 2
Epoch 1/1000
11/11 - 10s - 876ms/step - loss: 267258183680.0000 - val_loss: 259932880896.0000
Epoch 2/1000
11/11 - 0s - 28ms/step - loss: 106805190656.0000 - val_loss: 50610733056.0000
Epoch 3/1000
11/11 - 0s - 21ms/step - loss: 66623197184.0000 - val_loss: 47928381440.0000
Epoch 4/1000
11/11 - 0s - 20ms/step - loss: 54566809600.0000 - val_loss: 56346836992.0000
Epoch 5/1000
11/11 - 0s - 21ms/step - loss: 50903007232.0000 - val_loss: 43162292224.0000
Epoch 6/1000
11/11 - 0s - 26ms/step - loss: 48324743168.0000 - val_loss: 43394420736.0000
Epoch 7/1000
11/11 - 0s - 27ms/step - loss: 47598956544.0000 - val_loss: 48775254016.0000
Epoch 8/1000
11/11 - 0s - 27ms/step - loss: 48255660032.0000 - val_loss: 42740350976.0000
Epoch 9/1000
11/11 - 0s - 20ms/step - loss: 46935891968.0000 - val_loss: 46169903104.0000
Epoch 10/1000
11/11 - 0s - 21ms/step - loss: 46176088064.0000 - val_loss: 42953801728.0000
Epoch 11/1000
11/11 - 0s - 20ms/step - loss: 46702272512.0000 - val_loss: 56010010624.0000
Epoch 12/1000
11/11 - 0s - 28ms/step - loss: 49683271680.0000 - val_loss: 41266475008.0000
Epoch 13/1000
11/11 - 0s - 27ms/step - loss: 44633038848.0000 - val_loss: 40359960576.0000
Epoch 14/1000
11/11 - 0s - 20ms/step - loss: 43521232896.0000 - val_loss: 41994715136.0000
Epoch 15/1000
11/11 - 0s - 21ms/step - loss: 41231835136.0000 - val_loss: 36438765568.0000
Epoch 16/1000
11/11 - 0s - 27ms/step - loss: 39191728128.0000 - val_loss: 36202024960.0000
Epoch 17/1000
11/11 - 0s - 27ms/step - loss: 36538523648.0000 - val_loss: 35685888000.0000
Epoch 18/1000
11/11 - 0s - 27ms/step - loss: 35283095552.0000 - val_loss: 33873610752.0000
Epoch 19/1000
11/11 - 0s - 21ms/step - loss: 33944877056.0000 - val_loss: 33315268608.0000
Epoch 20/1000
11/11 - 0s - 21ms/step - loss: 33585446912.0000 - val_loss: 41680842752.0000
Epoch 21/1000
11/11 - 0s - 21ms/step - loss: 34264877056.0000 - val_loss: 32696600576.0000
Epoch 22/1000
11/11 - 0s - 27ms/step - loss: 32500652032.0000 - val_loss: 32595482624.0000
Epoch 23/1000
11/11 - 0s - 27ms/step - loss: 31260354560.0000 - val_loss: 34459127808.0000
Epoch 24/1000
11/11 - 0s - 21ms/step - loss: 29883645952.0000 - val_loss: 27997245440.0000
Epoch 25/1000
11/11 - 0s - 21ms/step - loss: 26475892736.0000 - val_loss: 27637485568.0000
Epoch 26/1000
11/11 - 0s - 21ms/step - loss: 25135038464.0000 - val_loss: 24711933952.0000
Epoch 27/1000
11/11 - 0s - 29ms/step - loss: 23849510912.0000 - val_loss: 26669041664.0000
Epoch 28/1000
11/11 - 0s - 23ms/step - loss: 22670524416.0000 - val_loss: 21265831936.0000
Epoch 29/1000
11/11 - 0s - 22ms/step - loss: 20447705088.0000 - val_loss: 21629337600.0000
Epoch 30/1000
11/11 - 0s - 22ms/step - loss: 18412314624.0000 - val_loss: 18302289920.0000
Epoch 31/1000
11/11 - 0s - 24ms/step - loss: 16776882176.0000 - val_loss: 15561116672.0000
Epoch 32/1000
11/11 - 0s - 23ms/step - loss: 15421431808.0000 - val_loss: 14751534080.0000
Epoch 33/1000
11/11 - 0s - 27ms/step - loss: 15177242624.0000 - val_loss: 13337240576.0000
Epoch 34/1000
11/11 - 0s - 27ms/step - loss: 13458414592.0000 - val_loss: 13061388288.0000
Epoch 35/1000
11/11 - 0s - 23ms/step - loss: 13233042432.0000 - val_loss: 12782821376.0000
Epoch 36/1000
11/11 - 0s - 27ms/step - loss: 12590473216.0000 - val_loss: 11559872512.0000
Epoch 37/1000
11/11 - 0s - 28ms/step - loss: 12186595328.0000 - val_loss: 11104072704.0000
Epoch 38/1000
11/11 - 0s - 32ms/step - loss: 11882692608.0000 - val_loss: 11191547904.0000
Epoch 39/1000
11/11 - 0s - 23ms/step - loss: 11369713664.0000 - val_loss: 10693766144.0000
Epoch 40/1000
11/11 - 0s - 21ms/step - loss: 11232186368.0000 - val_loss: 11100065792.0000
Epoch 41/1000
11/11 - 0s - 26ms/step - loss: 11411860480.0000 - val_loss: 10294526976.0000
Epoch 42/1000
11/11 - 0s - 20ms/step - loss: 10739627008.0000 - val_loss: 11318057984.0000
Epoch 43/1000
11/11 - 0s - 26ms/step - loss: 10443568128.0000 - val_loss: 9930784768.0000
Epoch 44/1000
11/11 - 0s - 20ms/step - loss: 10073742336.0000 - val_loss: 10044209152.0000
Epoch 45/1000
11/11 - 0s - 20ms/step - loss: 10077907968.0000 - val_loss: 10291717120.0000
Epoch 46/1000
11/11 - 0s - 28ms/step - loss: 9593617408.0000 - val_loss: 9904843776.0000
Epoch 47/1000
11/11 - 0s - 21ms/step - loss: 9390256128.0000 - val_loss: 10713446400.0000
Epoch 48/1000
11/11 - 0s - 33ms/step - loss: 9830289408.0000 - val_loss: 9901130752.0000
Epoch 49/1000
11/11 - 0s - 21ms/step - loss: 9286518784.0000 - val_loss: 10039477248.0000
Epoch 50/1000
11/11 - 0s - 27ms/step - loss: 9138186240.0000 - val_loss: 9898916864.0000
Epoch 51/1000
11/11 - 0s - 20ms/step - loss: 8887951360.0000 - val_loss: 10158228480.0000
Epoch 52/1000
11/11 - 0s - 28ms/step - loss: 8956895232.0000 - val_loss: 10591331328.0000
Epoch 53/1000
11/11 - 0s - 28ms/step - loss: 8931240960.0000 - val_loss: 10424711168.0000
Epoch 54/1000
11/11 - 0s - 27ms/step - loss: 8963271680.0000 - val_loss: 10028475392.0000
Epoch 55/1000
11/11 - 0s - 21ms/step - loss: 8457361920.0000 - val_loss: 10017034240.0000
Epoch 56/1000
11/11 - 0s - 21ms/step - loss: 8451962880.0000 - val_loss: 10212073472.0000
Epoch 57/1000
11/11 - 0s - 20ms/step - loss: 8471023104.0000 - val_loss: 12063151104.0000
Epoch 58/1000
11/11 - 0s - 21ms/step - loss: 8442937344.0000 - val_loss: 10105838592.0000
Epoch 59/1000
11/11 - 0s - 27ms/step - loss: 8478894592.0000 - val_loss: 9849234432.0000
Epoch 60/1000
11/11 - 0s - 27ms/step - loss: 9200734208.0000 - val_loss: 9785556992.0000
Epoch 61/1000
11/11 - 0s - 21ms/step - loss: 9168292864.0000 - val_loss: 10081515520.0000
Epoch 62/1000
11/11 - 0s - 27ms/step - loss: 8481573888.0000 - val_loss: 9717085184.0000
Epoch 63/1000
11/11 - 0s - 22ms/step - loss: 8429221888.0000 - val_loss: 10046105600.0000
Epoch 64/1000
11/11 - 0s - 26ms/step - loss: 8104039936.0000 - val_loss: 10736132096.0000
Epoch 65/1000
11/11 - 0s - 27ms/step - loss: 9271658496.0000 - val_loss: 11251181568.0000
Epoch 66/1000
11/11 - 0s - 28ms/step - loss: 9128989696.0000 - val_loss: 11377344512.0000
Epoch 67/1000
11/11 - 0s - 20ms/step - loss: 8769547264.0000 - val_loss: 10608928768.0000
Epoch 68/1000
11/11 - 0s - 20ms/step - loss: 8186222080.0000 - val_loss: 9885089792.0000
Epoch 69/1000
11/11 - 0s - 21ms/step - loss: 7916572672.0000 - val_loss: 9906735104.0000
Epoch 70/1000
11/11 - 0s - 20ms/step - loss: 7720143360.0000 - val_loss: 10095616000.0000
Epoch 71/1000
11/11 - 0s - 21ms/step - loss: 7702813184.0000 - val_loss: 9923070976.0000
Epoch 72/1000
11/11 - 0s - 27ms/step - loss: 7873694208.0000 - val_loss: 9915001856.0000
Epoch 73/1000
11/11 - 0s - 26ms/step - loss: 7720011264.0000 - val_loss: 9960067072.0000
Epoch 74/1000
11/11 - 0s - 28ms/step - loss: 7641988608.0000 - val_loss: 10361395200.0000
Epoch 74: early stopping

Run 3
Epoch 1/1000
11/11 - 9s - 863ms/step - loss: 268092915712.0000 - val_loss: 268400328704.0000
Epoch 2/1000
11/11 - 0s - 28ms/step - loss: 127854428160.0000 - val_loss: 46941380608.0000
Epoch 3/1000
11/11 - 0s - 22ms/step - loss: 60773019648.0000 - val_loss: 47995564032.0000
Epoch 4/1000
11/11 - 0s - 26ms/step - loss: 50402684928.0000 - val_loss: 47504678912.0000
Epoch 5/1000
11/11 - 0s - 21ms/step - loss: 46946058240.0000 - val_loss: 43064270848.0000
Epoch 6/1000
11/11 - 0s - 27ms/step - loss: 47755034624.0000 - val_loss: 50324955136.0000
Epoch 7/1000
11/11 - 0s - 27ms/step - loss: 48501358592.0000 - val_loss: 45844901888.0000
Epoch 8/1000
11/11 - 0s - 21ms/step - loss: 48037490688.0000 - val_loss: 43700715520.0000
Epoch 9/1000
11/11 - 0s - 27ms/step - loss: 46915813376.0000 - val_loss: 45237641216.0000
Epoch 10/1000
11/11 - 0s - 27ms/step - loss: 47303667712.0000 - val_loss: 46254108672.0000
Epoch 11/1000
11/11 - 0s - 21ms/step - loss: 45313527808.0000 - val_loss: 41656344576.0000
Epoch 12/1000
11/11 - 0s - 26ms/step - loss: 44532641792.0000 - val_loss: 40779378688.0000
Epoch 13/1000
11/11 - 0s - 21ms/step - loss: 42331242496.0000 - val_loss: 38089740288.0000
Epoch 14/1000
11/11 - 0s - 21ms/step - loss: 40285634560.0000 - val_loss: 35881259008.0000
Epoch 15/1000
11/11 - 0s - 21ms/step - loss: 39699415040.0000 - val_loss: 37072240640.0000
Epoch 16/1000
11/11 - 0s - 26ms/step - loss: 36303556608.0000 - val_loss: 37045194752.0000
Epoch 17/1000
11/11 - 0s - 28ms/step - loss: 34717388800.0000 - val_loss: 33722054656.0000
Epoch 18/1000
11/11 - 0s - 21ms/step - loss: 34074603520.0000 - val_loss: 34569322496.0000
Epoch 19/1000
11/11 - 0s - 26ms/step - loss: 34203435008.0000 - val_loss: 39258808320.0000
Epoch 20/1000
11/11 - 0s - 29ms/step - loss: 33312423936.0000 - val_loss: 30875664384.0000
Epoch 21/1000
11/11 - 0s - 24ms/step - loss: 31685040128.0000 - val_loss: 30821629952.0000
Epoch 22/1000
11/11 - 0s - 26ms/step - loss: 31485536256.0000 - val_loss: 33488105472.0000
Epoch 23/1000
11/11 - 0s - 28ms/step - loss: 27685079040.0000 - val_loss: 28216707072.0000
Epoch 24/1000
11/11 - 0s - 22ms/step - loss: 25532045312.0000 - val_loss: 25337348096.0000
Epoch 25/1000
11/11 - 0s - 27ms/step - loss: 23802853376.0000 - val_loss: 22714286080.0000
Epoch 26/1000
11/11 - 0s - 28ms/step - loss: 21137938432.0000 - val_loss: 20900470784.0000
Epoch 27/1000
11/11 - 0s - 23ms/step - loss: 18474278912.0000 - val_loss: 18421682176.0000
Epoch 28/1000
11/11 - 0s - 27ms/step - loss: 17574699008.0000 - val_loss: 16725166080.0000
Epoch 29/1000
11/11 - 0s - 24ms/step - loss: 15469488128.0000 - val_loss: 15429488640.0000
Epoch 30/1000
11/11 - 0s - 27ms/step - loss: 15203155968.0000 - val_loss: 15164461056.0000
Epoch 31/1000
11/11 - 0s - 24ms/step - loss: 15684504576.0000 - val_loss: 13553332224.0000
Epoch 32/1000
11/11 - 0s - 22ms/step - loss: 13584803840.0000 - val_loss: 15328420864.0000
Epoch 33/1000
11/11 - 0s - 27ms/step - loss: 15150929920.0000 - val_loss: 15301359616.0000
Epoch 34/1000
11/11 - 0s - 27ms/step - loss: 16393713664.0000 - val_loss: 12381244416.0000
Epoch 35/1000
11/11 - 0s - 21ms/step - loss: 14167842816.0000 - val_loss: 14684969984.0000
Epoch 36/1000
11/11 - 0s - 27ms/step - loss: 13267652608.0000 - val_loss: 11451168768.0000
Epoch 37/1000
11/11 - 0s - 20ms/step - loss: 11737360384.0000 - val_loss: 11105142784.0000
Epoch 38/1000
11/11 - 0s - 20ms/step - loss: 11460120576.0000 - val_loss: 11153727488.0000
Epoch 39/1000
11/11 - 0s - 20ms/step - loss: 11263817728.0000 - val_loss: 10795284480.0000
Epoch 40/1000
11/11 - 0s - 28ms/step - loss: 12043511808.0000 - val_loss: 15006258176.0000
Epoch 41/1000
11/11 - 0s - 20ms/step - loss: 11215549440.0000 - val_loss: 10803222528.0000
Epoch 42/1000
11/11 - 0s - 27ms/step - loss: 10819984384.0000 - val_loss: 10487068672.0000
Epoch 43/1000
11/11 - 0s - 27ms/step - loss: 10339501056.0000 - val_loss: 10026815488.0000
Epoch 44/1000
11/11 - 0s - 28ms/step - loss: 10092037120.0000 - val_loss: 9922017280.0000
Epoch 45/1000
11/11 - 0s - 21ms/step - loss: 10287849472.0000 - val_loss: 9953941504.0000
Epoch 46/1000
11/11 - 0s - 20ms/step - loss: 10820796416.0000 - val_loss: 11463135232.0000
Epoch 47/1000
11/11 - 0s - 20ms/step - loss: 9779210240.0000 - val_loss: 10180794368.0000
Epoch 48/1000
11/11 - 0s - 21ms/step - loss: 9803822080.0000 - val_loss: 9871713280.0000
Epoch 49/1000
11/11 - 0s - 21ms/step - loss: 9350083584.0000 - val_loss: 10407900160.0000
Epoch 50/1000
11/11 - 0s - 20ms/step - loss: 9551058944.0000 - val_loss: 9904770048.0000
Epoch 51/1000
11/11 - 0s - 21ms/step - loss: 10157510656.0000 - val_loss: 9963786240.0000
Epoch 52/1000
11/11 - 0s - 27ms/step - loss: 9489841152.0000 - val_loss: 9972634624.0000
Epoch 53/1000
11/11 - 0s - 26ms/step - loss: 9026240512.0000 - val_loss: 9750672384.0000
Epoch 54/1000
11/11 - 0s - 26ms/step - loss: 8913009664.0000 - val_loss: 9684064256.0000
Epoch 55/1000
11/11 - 0s - 27ms/step - loss: 8771359744.0000 - val_loss: 9595750400.0000
Epoch 56/1000
11/11 - 0s - 21ms/step - loss: 8764233728.0000 - val_loss: 10699923456.0000
Epoch 57/1000
11/11 - 0s - 27ms/step - loss: 9090740224.0000 - val_loss: 10707891200.0000
Epoch 58/1000
11/11 - 0s - 27ms/step - loss: 8883131392.0000 - val_loss: 9853745152.0000
Epoch 59/1000
11/11 - 0s - 20ms/step - loss: 8409378816.0000 - val_loss: 9619861504.0000
Epoch 60/1000
11/11 - 0s - 26ms/step - loss: 8260495872.0000 - val_loss: 9560406016.0000
Epoch 61/1000
11/11 - 0s - 27ms/step - loss: 8749483008.0000 - val_loss: 9440520192.0000
Epoch 62/1000
11/11 - 0s - 20ms/step - loss: 8397681664.0000 - val_loss: 9456204800.0000
Epoch 63/1000
11/11 - 0s - 20ms/step - loss: 8376188416.0000 - val_loss: 9590563840.0000
Epoch 64/1000
11/11 - 0s - 27ms/step - loss: 8111206912.0000 - val_loss: 9919833088.0000
Epoch 65/1000
11/11 - 0s - 21ms/step - loss: 8002386432.0000 - val_loss: 9539616768.0000
Epoch 66/1000
11/11 - 0s - 27ms/step - loss: 7925018624.0000 - val_loss: 9531191296.0000
Epoch 67/1000
11/11 - 0s - 20ms/step - loss: 8014470144.0000 - val_loss: 9784645632.0000
Epoch 68/1000
11/11 - 0s - 27ms/step - loss: 8066888704.0000 - val_loss: 9709014016.0000
Epoch 69/1000
11/11 - 0s - 21ms/step - loss: 8428279808.0000 - val_loss: 9576230912.0000
Epoch 70/1000
11/11 - 0s - 28ms/step - loss: 8258231808.0000 - val_loss: 10044994560.0000
Epoch 71/1000
11/11 - 0s - 27ms/step - loss: 8235362816.0000 - val_loss: 9497393152.0000
Epoch 72/1000
11/11 - 0s - 22ms/step - loss: 8218406912.0000 - val_loss: 9619438592.0000
Epoch 73/1000
11/11 - 0s - 32ms/step - loss: 7809679872.0000 - val_loss: 9389286400.0000
Epoch 74/1000
11/11 - 1s - 47ms/step - loss: 8789606400.0000 - val_loss: 9959842816.0000
Epoch 75/1000
11/11 - 0s - 24ms/step - loss: 7856222720.0000 - val_loss: 10462605312.0000
Epoch 76/1000
11/11 - 0s - 23ms/step - loss: 8090364928.0000 - val_loss: 9554671616.0000
Epoch 77/1000
11/11 - 0s - 28ms/step - loss: 7803509760.0000 - val_loss: 9492185088.0000
Epoch 78/1000
11/11 - 0s - 26ms/step - loss: 7625941504.0000 - val_loss: 9431655424.0000
Epoch 79/1000
11/11 - 0s - 23ms/step - loss: 7715689984.0000 - val_loss: 9660882944.0000
Epoch 80/1000
11/11 - 0s - 23ms/step - loss: 7428864000.0000 - val_loss: 9581800448.0000
Epoch 81/1000
11/11 - 0s - 24ms/step - loss: 7629045760.0000 - val_loss: 9952685056.0000
Epoch 82/1000
11/11 - 0s - 22ms/step - loss: 7637672448.0000 - val_loss: 10674445312.0000
Epoch 83/1000
11/11 - 0s - 27ms/step - loss: 7497033728.0000 - val_loss: 10859628544.0000
Epoch 84/1000
11/11 - 0s - 27ms/step - loss: 8466131456.0000 - val_loss: 10171200512.0000
Epoch 85/1000
11/11 - 0s - 21ms/step - loss: 7721816576.0000 - val_loss: 9534888960.0000
Epoch 85: early stopping

Run 4
Epoch 1/1000
11/11 - 8s - 689ms/step - loss: 260881154048.0000 - val_loss: 216291721216.0000
Epoch 2/1000
11/11 - 0s - 28ms/step - loss: 100594745344.0000 - val_loss: 54959718400.0000
Epoch 3/1000
11/11 - 0s - 21ms/step - loss: 57962647552.0000 - val_loss: 43557421056.0000
Epoch 4/1000
11/11 - 0s - 27ms/step - loss: 47888011264.0000 - val_loss: 55641169920.0000
Epoch 5/1000
11/11 - 0s - 27ms/step - loss: 52362014720.0000 - val_loss: 43734110208.0000
Epoch 6/1000
11/11 - 0s - 30ms/step - loss: 50872541184.0000 - val_loss: 46022287360.0000
Epoch 7/1000
11/11 - 0s - 26ms/step - loss: 47377383424.0000 - val_loss: 47046483968.0000
Epoch 8/1000
11/11 - 0s - 23ms/step - loss: 47297847296.0000 - val_loss: 49118748672.0000
Epoch 9/1000
11/11 - 0s - 22ms/step - loss: 49192132608.0000 - val_loss: 45782040576.0000
Epoch 10/1000
11/11 - 0s - 22ms/step - loss: 49124671488.0000 - val_loss: 42351013888.0000
Epoch 11/1000
11/11 - 0s - 23ms/step - loss: 46687657984.0000 - val_loss: 41147281408.0000
Epoch 12/1000
11/11 - 0s - 27ms/step - loss: 45779943424.0000 - val_loss: 49044303872.0000
Epoch 13/1000
11/11 - 0s - 23ms/step - loss: 43081125888.0000 - val_loss: 44489457664.0000
Epoch 14/1000
11/11 - 0s - 24ms/step - loss: 41237950464.0000 - val_loss: 35622141952.0000
Epoch 15/1000
11/11 - 0s - 27ms/step - loss: 36610789376.0000 - val_loss: 37970063360.0000
Epoch 16/1000
11/11 - 0s - 23ms/step - loss: 35800375296.0000 - val_loss: 34200064000.0000
Epoch 17/1000
11/11 - 0s - 27ms/step - loss: 34585591808.0000 - val_loss: 38287417344.0000
Epoch 18/1000
11/11 - 0s - 28ms/step - loss: 34258968576.0000 - val_loss: 34896502784.0000
Epoch 19/1000
11/11 - 0s - 23ms/step - loss: 33079857152.0000 - val_loss: 33920497664.0000
Epoch 20/1000
11/11 - 0s - 21ms/step - loss: 33344856064.0000 - val_loss: 31253299200.0000
Epoch 21/1000
11/11 - 0s - 21ms/step - loss: 30107688960.0000 - val_loss: 30495016960.0000
Epoch 22/1000
11/11 - 0s - 20ms/step - loss: 28185049088.0000 - val_loss: 30559760384.0000
Epoch 23/1000
11/11 - 0s - 21ms/step - loss: 26916306944.0000 - val_loss: 26902634496.0000
Epoch 24/1000
11/11 - 0s - 27ms/step - loss: 25070747648.0000 - val_loss: 24641986560.0000
Epoch 25/1000
11/11 - 0s - 27ms/step - loss: 22737641472.0000 - val_loss: 23689697280.0000
Epoch 26/1000
11/11 - 0s - 27ms/step - loss: 21379293184.0000 - val_loss: 23940390912.0000
Epoch 27/1000
11/11 - 0s - 20ms/step - loss: 19866318848.0000 - val_loss: 17988902912.0000
Epoch 28/1000
11/11 - 0s - 27ms/step - loss: 17874358272.0000 - val_loss: 16592540672.0000
Epoch 29/1000
11/11 - 0s - 21ms/step - loss: 15965877248.0000 - val_loss: 15931141120.0000
Epoch 30/1000
11/11 - 0s - 21ms/step - loss: 15518939136.0000 - val_loss: 13806148608.0000
Epoch 31/1000
11/11 - 0s - 28ms/step - loss: 14396275712.0000 - val_loss: 13739876352.0000
Epoch 32/1000
11/11 - 0s - 21ms/step - loss: 13804881920.0000 - val_loss: 12368251904.0000
Epoch 33/1000
11/11 - 0s - 21ms/step - loss: 13096493056.0000 - val_loss: 13225853952.0000
Epoch 34/1000
11/11 - 0s - 27ms/step - loss: 13593682944.0000 - val_loss: 11642205184.0000
Epoch 35/1000
11/11 - 0s - 20ms/step - loss: 12659339264.0000 - val_loss: 11339800576.0000
Epoch 36/1000
11/11 - 0s - 20ms/step - loss: 12218050560.0000 - val_loss: 11724711936.0000
Epoch 37/1000
11/11 - 0s - 21ms/step - loss: 11837631488.0000 - val_loss: 10999783424.0000
Epoch 38/1000
11/11 - 0s - 27ms/step - loss: 11369031680.0000 - val_loss: 10667195392.0000
Epoch 39/1000
11/11 - 0s - 27ms/step - loss: 11174235136.0000 - val_loss: 11303018496.0000
Epoch 40/1000
11/11 - 0s - 28ms/step - loss: 11394164736.0000 - val_loss: 10229036032.0000
Epoch 41/1000
11/11 - 0s - 27ms/step - loss: 10736654336.0000 - val_loss: 10375907328.0000
Epoch 42/1000
11/11 - 0s - 21ms/step - loss: 10549659648.0000 - val_loss: 10649748480.0000
Epoch 43/1000
11/11 - 0s - 20ms/step - loss: 10396948480.0000 - val_loss: 10242446336.0000
Epoch 44/1000
11/11 - 0s - 28ms/step - loss: 10924205056.0000 - val_loss: 10389179392.0000
Epoch 45/1000
11/11 - 0s - 21ms/step - loss: 10817513472.0000 - val_loss: 10753281024.0000
Epoch 46/1000
11/11 - 0s - 20ms/step - loss: 9810915328.0000 - val_loss: 9847748608.0000
Epoch 47/1000
11/11 - 0s - 20ms/step - loss: 9945701376.0000 - val_loss: 9963199488.0000
Epoch 48/1000
11/11 - 0s - 20ms/step - loss: 9631454208.0000 - val_loss: 9883752448.0000
Epoch 49/1000
11/11 - 0s - 28ms/step - loss: 9487415296.0000 - val_loss: 10239935488.0000
Epoch 50/1000
11/11 - 0s - 20ms/step - loss: 9416366080.0000 - val_loss: 10039240704.0000
Epoch 51/1000
11/11 - 0s - 27ms/step - loss: 9413936128.0000 - val_loss: 10039982080.0000
Epoch 52/1000
11/11 - 0s - 21ms/step - loss: 9036206080.0000 - val_loss: 10678897664.0000
Epoch 53/1000
11/11 - 0s - 22ms/step - loss: 9137463296.0000 - val_loss: 10339527680.0000
Epoch 54/1000
11/11 - 0s - 20ms/step - loss: 8926526464.0000 - val_loss: 10176991232.0000
Epoch 55/1000
11/11 - 0s - 20ms/step - loss: 9102442496.0000 - val_loss: 10358497280.0000
Epoch 56/1000
11/11 - 0s - 28ms/step - loss: 9201969152.0000 - val_loss: 10650563584.0000
Epoch 57/1000
11/11 - 0s - 26ms/step - loss: 8798551040.0000 - val_loss: 10668664832.0000
Epoch 58/1000
11/11 - 0s - 29ms/step - loss: 8669476864.0000 - val_loss: 9853111296.0000
Epoch 58: early stopping

Run 5
Epoch 1/1000
11/11 - 8s - 771ms/step - loss: 273315479552.0000 - val_loss: 316897591296.0000
Epoch 2/1000
11/11 - 0s - 26ms/step - loss: 253154230272.0000 - val_loss: 210632736768.0000
Epoch 3/1000
11/11 - 0s - 22ms/step - loss: 103050330112.0000 - val_loss: 43344068608.0000
Epoch 4/1000
11/11 - 0s - 27ms/step - loss: 56234921984.0000 - val_loss: 55373357056.0000
Epoch 5/1000
11/11 - 0s - 27ms/step - loss: 48540504064.0000 - val_loss: 43562127360.0000
Epoch 6/1000
11/11 - 0s - 27ms/step - loss: 47259693056.0000 - val_loss: 46089293824.0000
Epoch 7/1000
11/11 - 0s - 27ms/step - loss: 47383588864.0000 - val_loss: 45823438848.0000
Epoch 8/1000
11/11 - 0s - 27ms/step - loss: 47314374656.0000 - val_loss: 44298014720.0000
Epoch 9/1000
11/11 - 0s - 27ms/step - loss: 46605721600.0000 - val_loss: 48352362496.0000
Epoch 10/1000
11/11 - 0s - 20ms/step - loss: 48114651136.0000 - val_loss: 42310053888.0000
Epoch 11/1000
11/11 - 0s - 27ms/step - loss: 46184677376.0000 - val_loss: 45149995008.0000
Epoch 12/1000
11/11 - 0s - 20ms/step - loss: 45199507456.0000 - val_loss: 44171599872.0000
Epoch 13/1000
11/11 - 0s - 20ms/step - loss: 43599966208.0000 - val_loss: 40693596160.0000
Epoch 14/1000
11/11 - 0s - 28ms/step - loss: 42296688640.0000 - val_loss: 36366184448.0000
Epoch 15/1000
11/11 - 0s - 21ms/step - loss: 37672013824.0000 - val_loss: 39401017344.0000
Epoch 16/1000
11/11 - 0s - 20ms/step - loss: 37000003584.0000 - val_loss: 34337277952.0000
Epoch 17/1000
11/11 - 0s - 27ms/step - loss: 34808844288.0000 - val_loss: 34486870016.0000
Epoch 18/1000
11/11 - 0s - 29ms/step - loss: 34718433280.0000 - val_loss: 39344590848.0000
Epoch 19/1000
11/11 - 0s - 26ms/step - loss: 33889425408.0000 - val_loss: 33192523776.0000
Epoch 20/1000
11/11 - 0s - 22ms/step - loss: 33314033664.0000 - val_loss: 34782687232.0000
Epoch 21/1000
11/11 - 0s - 23ms/step - loss: 31142322176.0000 - val_loss: 29391751168.0000
Epoch 22/1000
11/11 - 0s - 23ms/step - loss: 29712277504.0000 - val_loss: 28268625920.0000
Epoch 23/1000
11/11 - 0s - 22ms/step - loss: 27656749056.0000 - val_loss: 28523593728.0000
Epoch 24/1000
11/11 - 0s - 22ms/step - loss: 25411506176.0000 - val_loss: 25640155136.0000
Epoch 25/1000
11/11 - 0s - 24ms/step - loss: 23558918144.0000 - val_loss: 25390348288.0000
Epoch 26/1000
11/11 - 0s - 24ms/step - loss: 22926733312.0000 - val_loss: 21253406720.0000
Epoch 27/1000
11/11 - 0s - 27ms/step - loss: 20283064320.0000 - val_loss: 21296322560.0000
Epoch 28/1000
11/11 - 0s - 24ms/step - loss: 18207135744.0000 - val_loss: 17224275968.0000
Epoch 29/1000
11/11 - 0s - 27ms/step - loss: 16617090048.0000 - val_loss: 16221270016.0000
Epoch 30/1000
11/11 - 0s - 27ms/step - loss: 15715513344.0000 - val_loss: 14485878784.0000
Epoch 31/1000
11/11 - 0s - 21ms/step - loss: 15071049728.0000 - val_loss: 13152035840.0000
Epoch 32/1000
11/11 - 0s - 27ms/step - loss: 14401320960.0000 - val_loss: 13395922944.0000
Epoch 33/1000
11/11 - 0s - 27ms/step - loss: 13398255616.0000 - val_loss: 11743373312.0000
Epoch 34/1000
11/11 - 0s - 27ms/step - loss: 12977217536.0000 - val_loss: 12084133888.0000
Epoch 35/1000
11/11 - 0s - 20ms/step - loss: 12616344576.0000 - val_loss: 11044146176.0000
Epoch 36/1000
11/11 - 0s - 20ms/step - loss: 12436725760.0000 - val_loss: 11709318144.0000
Epoch 37/1000
11/11 - 0s - 21ms/step - loss: 12430523392.0000 - val_loss: 10859594752.0000
Epoch 38/1000
11/11 - 0s - 20ms/step - loss: 11898344448.0000 - val_loss: 12121486336.0000
Epoch 39/1000
11/11 - 0s - 27ms/step - loss: 12825503744.0000 - val_loss: 10684230656.0000
Epoch 40/1000
11/11 - 0s - 28ms/step - loss: 12508416000.0000 - val_loss: 11115001856.0000
Epoch 41/1000
11/11 - 0s - 27ms/step - loss: 11302900736.0000 - val_loss: 10361228288.0000
Epoch 42/1000
11/11 - 0s - 21ms/step - loss: 10999954432.0000 - val_loss: 10493672448.0000
Epoch 43/1000
11/11 - 0s - 27ms/step - loss: 10883463168.0000 - val_loss: 10291694592.0000
Epoch 44/1000
11/11 - 0s - 27ms/step - loss: 10654239744.0000 - val_loss: 10190036992.0000
Epoch 45/1000
11/11 - 0s - 21ms/step - loss: 10454597632.0000 - val_loss: 10520812544.0000
Epoch 46/1000
11/11 - 0s - 26ms/step - loss: 10315413504.0000 - val_loss: 10221582336.0000
Epoch 47/1000
11/11 - 0s - 21ms/step - loss: 10314905600.0000 - val_loss: 10129583104.0000
Epoch 48/1000
11/11 - 0s - 27ms/step - loss: 10151404544.0000 - val_loss: 10236366848.0000
Epoch 49/1000
11/11 - 0s - 20ms/step - loss: 10045820928.0000 - val_loss: 10404468736.0000
Epoch 50/1000
11/11 - 0s - 20ms/step - loss: 10154970112.0000 - val_loss: 9937872896.0000
Epoch 51/1000
11/11 - 0s - 28ms/step - loss: 9747815424.0000 - val_loss: 10181926912.0000
Epoch 52/1000
11/11 - 0s - 27ms/step - loss: 9760124928.0000 - val_loss: 9852771328.0000
Epoch 53/1000
11/11 - 0s - 20ms/step - loss: 9631047680.0000 - val_loss: 9948894208.0000
Epoch 54/1000
11/11 - 0s - 28ms/step - loss: 9407104000.0000 - val_loss: 9984546816.0000
Epoch 55/1000
11/11 - 0s - 27ms/step - loss: 9357023232.0000 - val_loss: 10108043264.0000
Epoch 56/1000
11/11 - 0s - 27ms/step - loss: 9654918144.0000 - val_loss: 10570314752.0000
Epoch 57/1000
11/11 - 0s - 26ms/step - loss: 9330406400.0000 - val_loss: 9827289088.0000
Epoch 58/1000
11/11 - 0s - 21ms/step - loss: 9007899648.0000 - val_loss: 10432338944.0000
Epoch 59/1000
11/11 - 0s - 27ms/step - loss: 9629406208.0000 - val_loss: 10533788672.0000
Epoch 60/1000
11/11 - 0s - 27ms/step - loss: 9522230272.0000 - val_loss: 10817681408.0000
Epoch 61/1000
11/11 - 0s - 27ms/step - loss: 8994243584.0000 - val_loss: 10031371264.0000
Epoch 62/1000
11/11 - 0s - 20ms/step - loss: 8855693312.0000 - val_loss: 10770260992.0000
Epoch 63/1000
11/11 - 0s - 27ms/step - loss: 9000203264.0000 - val_loss: 9869681664.0000
Epoch 64/1000
11/11 - 0s - 20ms/step - loss: 9015709696.0000 - val_loss: 9953930240.0000
Epoch 65/1000
11/11 - 0s - 27ms/step - loss: 8702980096.0000 - val_loss: 9902608384.0000
Epoch 66/1000
11/11 - 0s - 21ms/step - loss: 8507173888.0000 - val_loss: 9934337024.0000
Epoch 67/1000
11/11 - 0s - 28ms/step - loss: 9123599360.0000 - val_loss: 10618095616.0000
Epoch 68/1000
11/11 - 0s - 27ms/step - loss: 8750243840.0000 - val_loss: 9688951808.0000
Epoch 69/1000
11/11 - 0s - 28ms/step - loss: 8457624064.0000 - val_loss: 9847475200.0000
Epoch 70/1000
11/11 - 0s - 23ms/step - loss: 8430509056.0000 - val_loss: 9959937024.0000
Epoch 71/1000
11/11 - 0s - 23ms/step - loss: 8060010496.0000 - val_loss: 9672370176.0000
Epoch 72/1000
11/11 - 0s - 22ms/step - loss: 8481714176.0000 - val_loss: 9644879872.0000
Epoch 73/1000
11/11 - 0s - 29ms/step - loss: 8082108416.0000 - val_loss: 10045622272.0000
Epoch 74/1000
11/11 - 0s - 23ms/step - loss: 8124358656.0000 - val_loss: 9965344768.0000
Epoch 75/1000
11/11 - 0s - 23ms/step - loss: 8029687808.0000 - val_loss: 9852009472.0000
Epoch 76/1000
11/11 - 0s - 24ms/step - loss: 7954547712.0000 - val_loss: 10036699136.0000
Epoch 77/1000
11/11 - 0s - 27ms/step - loss: 7765424640.0000 - val_loss: 10137728000.0000
Epoch 78/1000
11/11 - 0s - 30ms/step - loss: 8240708608.0000 - val_loss: 10004542464.0000
Epoch 79/1000
11/11 - 0s - 24ms/step - loss: 7565928960.0000 - val_loss: 10459736064.0000
Epoch 80/1000
11/11 - 0s - 26ms/step - loss: 7708740096.0000 - val_loss: 10965586944.0000
Epoch 81/1000
11/11 - 0s - 20ms/step - loss: 7539841536.0000 - val_loss: 10255599616.0000
Epoch 82/1000
11/11 - 0s - 27ms/step - loss: 7561065472.0000 - val_loss: 11214482432.0000
Epoch 83/1000
11/11 - 0s - 21ms/step - loss: 7507389952.0000 - val_loss: 10567151616.0000
Epoch 84/1000
11/11 - 0s - 27ms/step - loss: 7130058752.0000 - val_loss: 10398894080.0000
Epoch 84: early stopping
Runs complete, saving model

In [230]:
print(relu_model.summary())
Model: "functional_14"
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Layer (type)              ┃ Output Shape           ┃        Param # ┃ Connected to           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
│ input_layer_29            │ (None, 128, 128, 3)    │              0 │ -                      │
│ (InputLayer)              │                        │                │                        │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2d_42 (Conv2D)        │ (None, 125, 125, 64)   │          3,136 │ input_layer_29[0][0]   │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ input_layer_28            │ (None, 43)             │              0 │ -                      │
│ (InputLayer)              │                        │                │                        │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ max_pooling2d_42          │ (None, 62, 62, 64)     │              0 │ conv2d_42[0][0]        │
│ (MaxPooling2D)            │                        │                │                        │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ flatten_28 (Flatten)      │ (None, 43)             │              0 │ input_layer_28[0][0]   │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2d_43 (Conv2D)        │ (None, 59, 59, 32)     │         32,800 │ max_pooling2d_42[0][0] │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ dense_112 (Dense)         │ (None, 256)            │         11,264 │ flatten_28[0][0]       │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ max_pooling2d_43          │ (None, 29, 29, 32)     │              0 │ conv2d_43[0][0]        │
│ (MaxPooling2D)            │                        │                │                        │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ dense_113 (Dense)         │ (None, 128)            │         32,896 │ dense_112[0][0]        │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2d_44 (Conv2D)        │ (None, 26, 26, 16)     │          8,208 │ max_pooling2d_43[0][0] │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ dense_114 (Dense)         │ (None, 64)             │          8,256 │ dense_113[0][0]        │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ max_pooling2d_44          │ (None, 13, 13, 16)     │              0 │ conv2d_44[0][0]        │
│ (MaxPooling2D)            │                        │                │                        │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ dense_115 (Dense)         │ (None, 25)             │          1,625 │ dense_114[0][0]        │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ flatten_29 (Flatten)      │ (None, 2704)           │              0 │ max_pooling2d_44[0][0] │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ concatenate_14            │ (None, 2729)           │              0 │ dense_115[0][0],       │
│ (Concatenate)             │                        │                │ flatten_29[0][0]       │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ dense_116 (Dense)         │ (None, 50)             │        136,500 │ concatenate_14[0][0]   │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ dense_117 (Dense)         │ (None, 30)             │          1,530 │ dense_116[0][0]        │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ dense_118 (Dense)         │ (None, 15)             │            465 │ dense_117[0][0]        │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ dense_119 (Dense)         │ (None, 1)              │             16 │ dense_118[0][0]        │
└───────────────────────────┴────────────────────────┴────────────────┴────────────────────────┘
 Total params: 710,090 (2.71 MB)
 Trainable params: 236,696 (924.59 KB)
 Non-trainable params: 0 (0.00 B)
 Optimizer params: 473,394 (1.81 MB)
None

RMSE and Lift chart¶

In [231]:
# Make predictions on the test set
y_pred = relu_model.predict([x_test, x_test_image])

# Calculate RMSE
rmse = np.sqrt(mean_squared_error(y_test, y_pred))

print(f"\nRoot Mean Squared Error (RMSE): {rmse:.2f}")
3/3 ━━━━━━━━━━━━━━━━━━━━ 1s 140ms/step

Root Mean Squared Error (RMSE): 96898.33
In [232]:
chart_regression(y_pred.flatten(), y_test, sort= True)

Additional features¶

Using VGG16¶

In [235]:
from keras.applications import VGG16
from keras.models import Model
from keras.layers import Input, Dense, Flatten, concatenate, GlobalAveragePooling2D
from keras.callbacks import ModelCheckpoint, EarlyStopping

checkpointer = ModelCheckpoint(filepath=os.path.join(saved_path, "vgg16_model.keras"), verbose=0, save_best_only=True)
# Load VGG16 model with pre-trained weights
vgg16_base = VGG16(weights='imagenet', include_top=False, input_shape=(128, 128, 3))

# Freeze VGG16 layers to prevent training
for layer in vgg16_base.layers:
    layer.trainable = False

# Add custom layers on top of VGG16
vgg16_output = vgg16_base.output
vgg16_output = GlobalAveragePooling2D()(vgg16_output)  # Add global average pooling

input_text = Input(shape=(43,))
flat_text = Flatten()(input_text)
dense_text1 = Dense(256, activation='relu')(flat_text)
dense_text2 = Dense(128, activation='relu')(dense_text1)
dense_text3 = Dense(64, activation='relu')(dense_text2)
text_model = Dense(25, activation='relu')(dense_text3)

# Concatenate VGG16 output with the text-based model
merge = concatenate([vgg16_output, text_model])

hidden1 = Dense(50, activation='relu')(merge)
hidden2 = Dense(30, activation='relu')(hidden1)
hidden3 = Dense(15, activation='relu')(hidden2)
output = Dense(1, activation='linear')(hidden3)

vgg16_model = Model(inputs=[input_text, vgg16_base.input], outputs=output)

vgg16_model.compile(optimizer='adam', loss='mean_squared_error')

checkpointer = ModelCheckpoint(filepath=os.path.join(saved_path, "vgg16_model.keras"), verbose=0, save_best_only=True)

monitor = EarlyStopping(monitor='val_loss', min_delta=1e-3, patience=12, verbose=1, mode='auto')

vgg16_model.fit([x_train, x_train_image], y_train, validation_data=([x_test, x_test_image], y_test), callbacks=[monitor, checkpointer], verbose=2, epochs=1000)

print('\nComplete, saving model')
vgg16_model.load_weights(os.path.join(saved_path, "vgg16_model.keras"))
Epoch 1/1000
11/11 - 8s - 767ms/step - loss: 273531322368.0000 - val_loss: 319340871680.0000
Epoch 2/1000
11/11 - 1s - 92ms/step - loss: 273490427904.0000 - val_loss: 319269765120.0000
Epoch 3/1000
11/11 - 1s - 107ms/step - loss: 273401151488.0000 - val_loss: 319104417792.0000
Epoch 4/1000
11/11 - 1s - 114ms/step - loss: 273198743552.0000 - val_loss: 318746427392.0000
Epoch 5/1000
11/11 - 1s - 82ms/step - loss: 272738353152.0000 - val_loss: 317894721536.0000
Epoch 6/1000
11/11 - 1s - 78ms/step - loss: 271611625472.0000 - val_loss: 315615150080.0000
Epoch 7/1000
11/11 - 4s - 378ms/step - loss: 268384763904.0000 - val_loss: 308996341760.0000
Epoch 8/1000
11/11 - 2s - 191ms/step - loss: 259082076160.0000 - val_loss: 289926873088.0000
Epoch 9/1000
11/11 - 1s - 102ms/step - loss: 233015672832.0000 - val_loss: 240411246592.0000
Epoch 10/1000
11/11 - 1s - 102ms/step - loss: 173819199488.0000 - val_loss: 139870797824.0000
Epoch 11/1000
11/11 - 1s - 77ms/step - loss: 84743872512.0000 - val_loss: 52144922624.0000
Epoch 12/1000
11/11 - 5s - 444ms/step - loss: 58334990336.0000 - val_loss: 47946231808.0000
Epoch 13/1000
11/11 - 1s - 86ms/step - loss: 47805997056.0000 - val_loss: 45659512832.0000
Epoch 14/1000
11/11 - 1s - 109ms/step - loss: 43663867904.0000 - val_loss: 39983005696.0000
Epoch 15/1000
11/11 - 2s - 175ms/step - loss: 38950010880.0000 - val_loss: 34690662400.0000
Epoch 16/1000
11/11 - 1s - 100ms/step - loss: 35224596480.0000 - val_loss: 32739397632.0000
Epoch 17/1000
11/11 - 1s - 120ms/step - loss: 32926793728.0000 - val_loss: 31280644096.0000
Epoch 18/1000
11/11 - 6s - 520ms/step - loss: 29701574656.0000 - val_loss: 27449765888.0000
Epoch 19/1000
11/11 - 6s - 516ms/step - loss: 28397144064.0000 - val_loss: 25555705856.0000
Epoch 20/1000
11/11 - 1s - 55ms/step - loss: 26400950272.0000 - val_loss: 25765451776.0000
Epoch 21/1000
11/11 - 1s - 106ms/step - loss: 24831991808.0000 - val_loss: 22555856896.0000
Epoch 22/1000
11/11 - 1s - 97ms/step - loss: 23288633344.0000 - val_loss: 22254985216.0000
Epoch 23/1000
11/11 - 1s - 92ms/step - loss: 22239907840.0000 - val_loss: 19724306432.0000
Epoch 24/1000
11/11 - 1s - 68ms/step - loss: 21010059264.0000 - val_loss: 19761850368.0000
Epoch 25/1000
11/11 - 1s - 94ms/step - loss: 19891752960.0000 - val_loss: 17487806464.0000
Epoch 26/1000
11/11 - 1s - 125ms/step - loss: 19769317376.0000 - val_loss: 16454932480.0000
Epoch 27/1000
11/11 - 1s - 66ms/step - loss: 18105065472.0000 - val_loss: 16923062272.0000
Epoch 28/1000
11/11 - 1s - 56ms/step - loss: 17604845568.0000 - val_loss: 16497246208.0000
Epoch 29/1000
11/11 - 1s - 89ms/step - loss: 16938425344.0000 - val_loss: 14989824000.0000
Epoch 30/1000
11/11 - 1s - 131ms/step - loss: 16347129856.0000 - val_loss: 13883162624.0000
Epoch 31/1000
11/11 - 1s - 66ms/step - loss: 16000985088.0000 - val_loss: 14501585920.0000
Epoch 32/1000
11/11 - 1s - 98ms/step - loss: 15300487168.0000 - val_loss: 13107907584.0000
Epoch 33/1000
11/11 - 1s - 110ms/step - loss: 15088741376.0000 - val_loss: 12869346304.0000
Epoch 34/1000
11/11 - 1s - 52ms/step - loss: 14706304000.0000 - val_loss: 13155562496.0000
Epoch 35/1000
11/11 - 1s - 58ms/step - loss: 14549078016.0000 - val_loss: 13211688960.0000
Epoch 36/1000
11/11 - 1s - 105ms/step - loss: 14245799936.0000 - val_loss: 12290546688.0000
Epoch 37/1000
11/11 - 1s - 96ms/step - loss: 13914559488.0000 - val_loss: 12175244288.0000
Epoch 38/1000
11/11 - 1s - 97ms/step - loss: 13719222272.0000 - val_loss: 11931735040.0000
Epoch 39/1000
11/11 - 7s - 614ms/step - loss: 13618040832.0000 - val_loss: 11534423040.0000
Epoch 40/1000
11/11 - 5s - 441ms/step - loss: 13412687872.0000 - val_loss: 11505906688.0000
Epoch 41/1000
11/11 - 1s - 103ms/step - loss: 13223200768.0000 - val_loss: 11494139904.0000
Epoch 42/1000
11/11 - 1s - 82ms/step - loss: 13204144128.0000 - val_loss: 11450593280.0000
Epoch 43/1000
11/11 - 5s - 494ms/step - loss: 12952382464.0000 - val_loss: 11360463872.0000
Epoch 44/1000
11/11 - 1s - 91ms/step - loss: 12829814784.0000 - val_loss: 11062692864.0000
Epoch 45/1000
11/11 - 1s - 90ms/step - loss: 12726158336.0000 - val_loss: 10802160640.0000
Epoch 46/1000
11/11 - 1s - 51ms/step - loss: 12627982336.0000 - val_loss: 10905986048.0000
Epoch 47/1000
11/11 - 1s - 52ms/step - loss: 12576425984.0000 - val_loss: 11198607360.0000
Epoch 48/1000
11/11 - 1s - 52ms/step - loss: 12554220544.0000 - val_loss: 11083004928.0000
Epoch 49/1000
11/11 - 1s - 48ms/step - loss: 12484625408.0000 - val_loss: 10882651136.0000
Epoch 50/1000
11/11 - 1s - 112ms/step - loss: 12295468032.0000 - val_loss: 10799078400.0000
Epoch 51/1000
11/11 - 1s - 100ms/step - loss: 12212790272.0000 - val_loss: 10769956864.0000
Epoch 52/1000
11/11 - 1s - 79ms/step - loss: 12279205888.0000 - val_loss: 10728002560.0000
Epoch 53/1000
11/11 - 1s - 50ms/step - loss: 12288838656.0000 - val_loss: 11083961344.0000
Epoch 54/1000
11/11 - 1s - 86ms/step - loss: 12081275904.0000 - val_loss: 10563915776.0000
Epoch 55/1000
11/11 - 5s - 483ms/step - loss: 11996198912.0000 - val_loss: 10491016192.0000
Epoch 56/1000
11/11 - 5s - 499ms/step - loss: 11909587968.0000 - val_loss: 10786310144.0000
Epoch 57/1000
11/11 - 1s - 46ms/step - loss: 11892495360.0000 - val_loss: 10862784512.0000
Epoch 58/1000
11/11 - 1s - 46ms/step - loss: 11834821632.0000 - val_loss: 10714628096.0000
Epoch 59/1000
11/11 - 1s - 76ms/step - loss: 11741768704.0000 - val_loss: 10472631296.0000
Epoch 60/1000
11/11 - 1s - 50ms/step - loss: 11764841472.0000 - val_loss: 10526589952.0000
Epoch 61/1000
11/11 - 0s - 45ms/step - loss: 11949022208.0000 - val_loss: 10816032768.0000
Epoch 62/1000
11/11 - 1s - 80ms/step - loss: 11697793024.0000 - val_loss: 10443331584.0000
Epoch 63/1000
11/11 - 1s - 50ms/step - loss: 11697062912.0000 - val_loss: 10664573952.0000
Epoch 64/1000
11/11 - 1s - 56ms/step - loss: 11552008192.0000 - val_loss: 10630918144.0000
Epoch 65/1000
11/11 - 1s - 52ms/step - loss: 11611678720.0000 - val_loss: 10605125632.0000
Epoch 66/1000
11/11 - 1s - 85ms/step - loss: 11530289152.0000 - val_loss: 10407739392.0000
Epoch 67/1000
11/11 - 1s - 47ms/step - loss: 11447139328.0000 - val_loss: 10544486400.0000
Epoch 68/1000
11/11 - 1s - 56ms/step - loss: 11378215936.0000 - val_loss: 10423535616.0000
Epoch 69/1000
11/11 - 1s - 51ms/step - loss: 11365143552.0000 - val_loss: 10756792320.0000
Epoch 70/1000
11/11 - 1s - 52ms/step - loss: 11518464000.0000 - val_loss: 10441686016.0000
Epoch 71/1000
11/11 - 1s - 97ms/step - loss: 11971278848.0000 - val_loss: 10328607744.0000
Epoch 72/1000
11/11 - 1s - 53ms/step - loss: 11493888000.0000 - val_loss: 10891899904.0000
Epoch 73/1000
11/11 - 1s - 101ms/step - loss: 11480771584.0000 - val_loss: 10279374848.0000
Epoch 74/1000
11/11 - 1s - 64ms/step - loss: 11263482880.0000 - val_loss: 10627367936.0000
Epoch 75/1000
11/11 - 1s - 110ms/step - loss: 11280115712.0000 - val_loss: 10227986432.0000
Epoch 76/1000
11/11 - 1s - 61ms/step - loss: 11265191936.0000 - val_loss: 10304346112.0000
Epoch 77/1000
11/11 - 1s - 46ms/step - loss: 11309159424.0000 - val_loss: 10442195968.0000
Epoch 78/1000
11/11 - 1s - 51ms/step - loss: 11989437440.0000 - val_loss: 11419660288.0000
Epoch 79/1000
11/11 - 1s - 83ms/step - loss: 11476726784.0000 - val_loss: 10189661184.0000
Epoch 80/1000
11/11 - 1s - 46ms/step - loss: 11379556352.0000 - val_loss: 10516487168.0000
Epoch 81/1000
11/11 - 1s - 47ms/step - loss: 11194258432.0000 - val_loss: 10249690112.0000
Epoch 82/1000
11/11 - 1s - 50ms/step - loss: 11172307968.0000 - val_loss: 10567200768.0000
Epoch 83/1000
11/11 - 1s - 52ms/step - loss: 11270579200.0000 - val_loss: 10387309568.0000
Epoch 84/1000
11/11 - 1s - 57ms/step - loss: 11306960896.0000 - val_loss: 10584027136.0000
Epoch 85/1000
11/11 - 1s - 80ms/step - loss: 11009538048.0000 - val_loss: 10069477376.0000
Epoch 86/1000
11/11 - 1s - 47ms/step - loss: 11215682560.0000 - val_loss: 10524016640.0000
Epoch 87/1000
11/11 - 1s - 60ms/step - loss: 11332177920.0000 - val_loss: 10493115392.0000
Epoch 88/1000
11/11 - 1s - 53ms/step - loss: 10916478976.0000 - val_loss: 10329788416.0000
Epoch 89/1000
11/11 - 1s - 49ms/step - loss: 11071591424.0000 - val_loss: 10382103552.0000
Epoch 90/1000
11/11 - 1s - 59ms/step - loss: 10961395712.0000 - val_loss: 10506971136.0000
Epoch 91/1000
11/11 - 1s - 53ms/step - loss: 10944715776.0000 - val_loss: 10458960896.0000
Epoch 92/1000
11/11 - 1s - 58ms/step - loss: 10902838272.0000 - val_loss: 10349320192.0000
Epoch 93/1000
11/11 - 1s - 53ms/step - loss: 10907577344.0000 - val_loss: 10697017344.0000
Epoch 94/1000
11/11 - 1s - 49ms/step - loss: 11006954496.0000 - val_loss: 10471915520.0000
Epoch 95/1000
11/11 - 1s - 58ms/step - loss: 11125342208.0000 - val_loss: 10554653696.0000
Epoch 96/1000
11/11 - 1s - 47ms/step - loss: 10849069056.0000 - val_loss: 10544370688.0000
Epoch 97/1000
11/11 - 1s - 51ms/step - loss: 10762668032.0000 - val_loss: 10473133056.0000
Epoch 97: early stopping

Complete, saving model
In [238]:
# Make predictions on the test set
y_pred = vgg16_model.predict([x_test, x_test_image])

# Calculate RMSE
rmse = np.sqrt(mean_squared_error(y_test, y_pred))

print(f"\nRoot Mean Squared Error (RMSE): {rmse:.2f}")
3/3 ━━━━━━━━━━━━━━━━━━━━ 0s 53ms/step

Root Mean Squared Error (RMSE): 100346.78
In [239]:
chart_regression(y_pred.flatten(), y_test, sort= True)